<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="doc.master" %> <asp:Content ID="Content1" runat="Server" ContentPlaceHolderID="ContentPlaceHolder1"> <h1>Dynamische Webvorlage in Master-Page umwandeln</h1> <p> Eine dynamische Webvorlage erzeugt den Kode aus dem sie besteht so oft als es Seiten gibt, die diesen Kode benötigen, also alle Seiten eines Webs. </p> <p> Wenn man eine Änderung der Webvorlage durchführt, muss man diese Änderung auf alle anderen Seiten übertragen. </p> <p> Im Prinzip enthält eine Master-Page den Kode der Webvorlage aber die einzelnen Detailseiten enthalten nur den Inhalt, der sie von der Master-Seite unterscheidet. </p> <p> Der eigentliche Vorteil der Masterseiten ist, dass sie nicht nur JavaScript-Kode enthalten können, sondern auch Kode, der an Server ausgeführt wird. Und damit werden Aufgaben wie Formular-Versand, Inklusion von Dateien, Login usw. möglich. </p> <ul> <li><b>Schritt</b> 1: Paket auswählen: „Daffodil Garden.fwp“ </li> <li><b>Schritt</b> 2: Neue Site öffnen, leere Site </li> <li><b>Schritt</b> 3: Site -> Importieren -> Von Webpaket importieren </li> <li><b>Schritt</b> 4: Umbenennen aller Seiten von html in aspx. Dabei werden die Links an allen betroffenen Stellen ebenfalls umbenannt. Die Seiten können nach wie vor unverändert im Browser über <code>Datei -> Browservorschau </code>betrachtet werden aber nicht mehr durch Aufruf am Desktop. </li> <li><b>Schritt</b> 5: <code>Datei -> Neu –> Seite Allgemeine -> Masterseite „site.master“</code> </li> <li><b>Schritt</b> 6: Löschen der Tags <code>title</code> und <code>meta content</code> aus <code>site.master</code>. </li> <li><b>Schritt</b> 7: Aus der Datei <code>site.dwt</code> kopiert man den Head-Teil in den Head-Teil von <code>site.master</code>. Die doppelt vorkommenden Tags <code>content</code> und <code>title</code> entfernt man. Im Pfad des Stylesheets muss man „../“ entfernen, weil sich die MasterDatei im Wurzelverzeichnis befindet. </li> <li><b>Schritt</b> 8: Ebenso kopiert man den Body-Teil aus site.dwt innerhalt des Tags <code>form</code>. Den Bereich <code><!-- #BeginEditable "content" -->---<!-- #EndEditable --></code> ersetzt man durch den Tag <code>ContentPlaceholder</code>. </li> <li><b>Schritt</b> 9: Verzeichnis <code>dwt</code> kann inklusive der Datei <code>site.dwt</code> gelöscht werden </li> <li><b>Schritt</b> 10: Eine erste Seite erstellen, die auf dieser Master-Seite beruht: <code>Datei -> Neu -> Aus Masterseite erstellen -> Spezifische Masterseite -> „site.master“</code> auswählen und als „test“ speichern. Das Ergebnis ist eine Seite test.aspx mit einer einzigen Zeile <code><%@ Page language="C#" masterpagefile="site.master" title="Site Name" %> </code> <br /> Wir ergänzen durch die Tags <code><asp:Content ContentPlaceHolderID="Head" Runat="Server"></asp:Content><asp:Content ContentPlaceHolderID="Content" Runat="Server"></asp:Content></code>. Dieses Fragment ist die Grundlage für alle folgenden Seiten. Der eigentliche Content kommt in die beiden </li> <li><b>Schritt</b> 11: Umwandeln aller ASPX-Seiten am Beispiel about.aspx. <ul> <li><b>Schritt</b> 1: Einfügung des Textfragments am Kopf der Seite einfügen. Damit wird der Rest der Seite als fehlerhaft markiert. Ändern von „Site-Name“ in „about“. Der Head-Content bleibt leer- </li> <li><b>Schritt</b> 2: Alles auf der Seite löschen mit Ausnahme von <code><h1>About</h1></code> und dem folgenden Absatz. Noch immer ist alles als fehlerhaft markiert. </li> <li><b>Schritt</b> 3: Einfügung des „About“-Kodefragments in diesen Tag. In den Tag ContentPlaceHolder. </li> </ul> </li> </ul> <h2>Hinweis</h2> <p> Wenn die Dynamische Webvorlage in einem Unterverzeichnis war, die Masterseite aber im Wurzelverzeichnis, dann sind die Links in der Masterseite fehlerhaft. Es steht dort zum Beispiel „../index.html“. Richtig ist aber „index.html“. Diese Links in der Masterseite muss man korrigieren. </p> <h2>Besondere Seiten</h2> <p> Seiten, die auch einen geänderten Kopfteil benötigen, dort muss man die weiteren Kopfzeilen in den ContentPlaceHolder „Head“ kopieren. </p> <p> Wenn es auf einer Dynamischen Webvorlage mehr als nur einen Content-Bereich gibt, muss man diese zusätzlichen Content-Bereiche in weiteren ContentPlaceHoldern verpacken, die man mit einer anderen ID versehen muss. </p> </asp:Content>